【CDI】Informatica Cloud Data IntegrationでCSVデータ件数チェック処理の実装
はじめに
データアナリティクス事業本部ビッグデータチームのyosh-kです。
今回はInformatica Cloud Data Integrationでcsvファイルの件数チェックを行い、0件である場合にエラー通知と処理を終了させる実装を行います。
前提条件
- IICS CDIを操作できる環境を構築済みであることを前提とします。
- S3 BucketからS3 Bucketへのロード処理を行います。
- データについては任意のデータを指定します。
※ Redshift Serverless接続は以下のブログをご参照ください。
IICS CDI Amazon Redshift V2 ConnectorでRedshift Serverlessと接続できるか試してみた
構成
構成としては画像の通りマッピング、マッピングタスク2つ、タスクフローとなります。それぞれ実装していきます。
実装
マッピング
ソースは任意のcsvファイルを指定します。
ターゲットは、接続のコネクタとターゲットの種類に新しいパラメータ
からパラメータを作成します。
以下、設定した入力パラメータです。
通常処理のマッピングタスク
通常処理のマッピングタスクでは、先ほど作成したマッピングを指定し、ターゲットの指定で任意のS3コネクタとcsvファイルを選択します。
件数チェック処理のマッピングタスク
件数チェック処理のマッピングタスクでは、先ほど作成したマッピングを指定し、ターゲットの指定でflatファイルを指定し、データが出力されないようにフラットファイルでdevnull
を指定します。
タスクフロー
続いて以下構成のタスクフローを作成します。
まずデータタスクで件数チェック処理のマッピングタスクを指定します。
次にディシジョンプロパティを用いて先ほどのデータタスクの出力パラメータから成功したターゲット行
をフィールドに指定し、パス1の条件を次の値に等しい
で0
とします。
件数が0件の場合にメール通知が送信される様に通知タスクを設定します。
スローでエラー終了させるために先ほどの件数チェック処理のフォルトを指定します。
ディシジョンもしくは
の分岐でデータ件数が0件ではない場合に処理を実行するように通常処理のマッピングタスクをデータタスクに指定します。
以上で実装は終了です。
実行
データ件数が0件の場合
ソースとなるS3 Bucketに、headerファイルのみ配置し、データ件数が0件の状態で処理を実行します。
タスクフローは失敗しました。 チェック処理のマッピングタスクは成功してますが、想定通りソース、ターゲットとも0件で出力されています。 タスクフローのログから0件の条件分岐に入り通知タスクが実行され、メール送信されていることまで確認できました。全て想定通りの挙動でした。
データ件数が0件ではない場合
ソースBucketに0件ではないデータが存在する状態で処理を実行します。
実行した結果、チェック処理の条件分岐でもしくは
の分岐に入り正常処理のジョブが起動し、タスクフローは正常終了しています。
チェック処理も正常に件数を取得できていることが確認できました。
最後に
IDMC CDIでデータが存在しなければその後の処理を走らせたくないケースがあると思いますので、その際の一つの解決策となれば幸いです。